package cn.iocoder.yudao.module.biz.service.expand.record;

import java.util.*;
import javax.validation.*;

import cn.iocoder.yudao.module.biz.controller.admin.expand.record.vo.*;
import cn.iocoder.yudao.module.biz.dal.dataobject.expand.record.ExpandRecordDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.apache.ibatis.annotations.Param;

/**
 * 拓展记录 Service 接口
 *
 * @author 超级管理员
 */
public interface ExpandRecordService {

    /**
     * 创建拓展记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createExpandRecord(@Valid ExpandRecordSaveReqVO createReqVO);

    /**
     * 更新拓展记录
     *
     * @param updateReqVO 更新信息
     */
    void updateExpandRecord(@Valid ExpandRecordSaveReqVO updateReqVO);

    /**
     * 删除拓展记录
     *
     * @param id 编号
     */
    void deleteExpandRecord(Long id);

    /**
    * 批量删除拓展记录
    *
    * @param ids 编号
    */
    void deleteExpandRecordListByIds(List<Long> ids);

    /**
     * 获得拓展记录
     *
     * @param id 编号
     * @return 拓展记录
     */
    ExpandRecordDO getExpandRecord(Long id);

    /**
     * 获得拓展记录分页
     *
     * @param pageReqVO 分页查询
     * @return 拓展记录分页
     */
    PageResult<ExpandRecordDO> getExpandRecordPage(ExpandRecordPageReqVO pageReqVO);

    /**
     * 统计拓展记录
     *
     * @param type 类型
     * @return 统计结果
     */
    ExpandRecordCountRespVO countByType(int type, Long userId);

    List<ExpandRecordUserCountRespVO> countAllUserExpand( Long teamId, String month);

    List<ExpandRecordRespVO> getExpandRecordCurrent(Long id, String month);

    Map<String,Object> getExpandRecordGk();

    List<ExpandRecordDO> getListByCondition(ExpandRecordPageReqVO pageReqVO);

    List<ExpandRecordDO> getListByInterviewee(ExpandRecordPageReqVO pageReqVO);

    List<ExpandRecordCheckRespVo> checkRecordByCustomerName(String customerName);
}
